package com.eastfair.venuebooking.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.eastfair.core.base.entity.Entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import static com.eastfair.core.utils.DateUtils.DEFAULT_DATE_TIME_FORMAT;
import com.eastfair.annotation.model.EchoVO;
import com.eastfair.venuebooking.enumeration.TemplateManageKindEnum;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 模板管理
 * </p>
 *
 * @author lyw
 * @since 2022-07-05
 */
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("vb_template_manage")
@ApiModel(value = "TemplateManage", description = "模板管理")
@AllArgsConstructor
public class TemplateManage extends Entity<Long> implements EchoVO {

    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private Map<String, Object> echoMap = new HashMap<>();
    /**
     * 模板名称
     */
    @ApiModelProperty(value = "模板名称")
    @Size(max = 255, message = "模板名称长度不能超过255")
    @TableField(value = "tem_name", condition = LIKE)
    @Excel(name = "模板名称")
    private String temName;

    /**
     * 模板类型 #{contract_one:合同模板001;}
     */
    @ApiModelProperty(value = "模板类型 #{contract_one:合同模板001;}")
    @TableField(value = "kind")
    @Excel(name = "模板类型 #{contract_one:合同模板001;}", replace = {"合同模板001_CONTRACT_ONE",  "_null"})
    private String kind;

    /**
     * 模板路径
     */
    @ApiModelProperty(value = "模板路径")
    @Size(max = 255, message = "模板路径长度不能超过255")
    @TableField(value = "tem_url", condition = LIKE)
    @Excel(name = "模板路径")
    private String temUrl;

    /**
     * XML模板路径
     */
    @ApiModelProperty(value = "XML模板路径")
    @Size(max = 255, message = "XML模板路径长度不能超过255")
    @TableField(value = "xml_tem_url", condition = LIKE)
    @Excel(name = "模板路径")
    private String XMLTemUrl;


    /**
     * 附件id
     */
    @ApiModelProperty(value = "附件id")
    @TableField(value = "attach_id")
    @Excel(name = "附件id")
    private Long attachId;

    /**
     * xml附件id
     */
    @ApiModelProperty(value = "xml附件id")
    @TableField(value = "attach_xml_id")
    @Excel(name = "xml附件id")
    private Long attachXmlId;


    /**
     * 模版类型   1合同模版-场租  2合同模版-服务项
     */
    @ApiModelProperty(value = "模版类型   1合同模版-场租  2合同模版-服务项")
    @Size(max = 1, message = "模版类型   1合同模版-场租  2合同模版-服务项长度不能超过1")
    @TableField(value = "type", condition = LIKE)
    @Excel(name = "模版类型   1合同模版-场租  2合同模版-服务项")
    private String type;

    /**
     * 是否启用：1是；0否
     */
    @ApiModelProperty(value = "是否启用：1是；0否")
    @TableField(value = "is_enabled")
    @Excel(name = "是否启用：1是；0否")
    private Integer isEnabled;

    /**
     * 是否删除：1是；0否
     */
    @ApiModelProperty(value = "是否删除：1是；0否")
    @TableField(value = "is_deleted")
    @Excel(name = "是否删除：1是；0否")
    private Integer isDeleted;

    /**
     * 项目id
     */
    @ApiModelProperty(value = "项目id")
    @TableField(value = "project_id")
    @Excel(name = "项目id")
    private Long projectId;

    /**
     * 子系统id
     */
    @ApiModelProperty(value = "子系统id")
    @TableField(value = "subsystem_id")
    @Excel(name = "子系统id")
    private Long subsystemId;

    /**
     * 租户id
     */
    @ApiModelProperty(value = "租户id")
    @TableField(value = "tenant_id")
    @Excel(name = "租户id")
    private Long tenantId;


    @Builder
    public TemplateManage(Long id, Long createdBy, LocalDateTime createTime, Long updatedBy, LocalDateTime updateTime, 
                    String temName, String kind, String temUrl, Long attachId, String type,
                    Integer isEnabled, Integer isDeleted, Long projectId, Long subsystemId, Long tenantId) {
        this.id = id;
        this.createdBy = createdBy;
        this.createTime = createTime;
        this.updatedBy = updatedBy;
        this.updateTime = updateTime;
        this.temName = temName;
        this.kind = kind;
        this.temUrl = temUrl;
        this.attachId = attachId;
        this.type = type;
        this.isEnabled = isEnabled;
        this.isDeleted = isDeleted;
        this.projectId = projectId;
        this.subsystemId = subsystemId;
        this.tenantId = tenantId;
    }

}
